{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "from sklearn import preprocessing\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from math import sqrt\n",
    "from keras.models import Sequential\n",
    "from keras.layers.core import Dense, Dropout, Activation\n",
    "from keras.layers.recurrent import LSTM\n",
    "#倒入一些必要的库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>开盘</th>\n",
       "      <th>最高</th>\n",
       "      <th>最低</th>\n",
       "      <th>收盘</th>\n",
       "      <th>涨幅</th>\n",
       "      <th>振幅</th>\n",
       "      <th>总手</th>\n",
       "      <th>金额</th>\n",
       "      <th>换手%</th>\n",
       "      <th>成交次数</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6920</th>\n",
       "      <td>1630.46</td>\n",
       "      <td>1665.46</td>\n",
       "      <td>1614.20</td>\n",
       "      <td>1656.71</td>\n",
       "      <td>0.036</td>\n",
       "      <td>0.0321</td>\n",
       "      <td>118020026</td>\n",
       "      <td>1472909400</td>\n",
       "      <td>0.608</td>\n",
       "      <td>67052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6921</th>\n",
       "      <td>1690.47</td>\n",
       "      <td>1714.22</td>\n",
       "      <td>1667.96</td>\n",
       "      <td>1689.22</td>\n",
       "      <td>0.0196</td>\n",
       "      <td>0.0279</td>\n",
       "      <td>113695774</td>\n",
       "      <td>1467535000</td>\n",
       "      <td>0.586</td>\n",
       "      <td>60751</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6922</th>\n",
       "      <td>1677.96</td>\n",
       "      <td>1747.98</td>\n",
       "      <td>1670.46</td>\n",
       "      <td>1712.97</td>\n",
       "      <td>0.0141</td>\n",
       "      <td>0.0459</td>\n",
       "      <td>107519243</td>\n",
       "      <td>1408651100</td>\n",
       "      <td>0.554</td>\n",
       "      <td>59522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6923</th>\n",
       "      <td>1736.72</td>\n",
       "      <td>1752.98</td>\n",
       "      <td>1715.47</td>\n",
       "      <td>1724.22</td>\n",
       "      <td>0.0066</td>\n",
       "      <td>0.0219</td>\n",
       "      <td>65301888</td>\n",
       "      <td>861618660</td>\n",
       "      <td>0.337</td>\n",
       "      <td>38464</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6924</th>\n",
       "      <td>1686.72</td>\n",
       "      <td>1710.47</td>\n",
       "      <td>1675.46</td>\n",
       "      <td>1697.97</td>\n",
       "      <td>-0.0152</td>\n",
       "      <td>0.0203</td>\n",
       "      <td>66173879</td>\n",
       "      <td>852956240</td>\n",
       "      <td>0.341</td>\n",
       "      <td>37324</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           开盘       最高       最低       收盘      涨幅      振幅         总手  \\\n",
       "6920  1630.46  1665.46  1614.20  1656.71   0.036  0.0321  118020026   \n",
       "6921  1690.47  1714.22  1667.96  1689.22  0.0196  0.0279  113695774   \n",
       "6922  1677.96  1747.98  1670.46  1712.97  0.0141  0.0459  107519243   \n",
       "6923  1736.72  1752.98  1715.47  1724.22  0.0066  0.0219   65301888   \n",
       "6924  1686.72  1710.47  1675.46  1697.97 -0.0152  0.0203   66173879   \n",
       "\n",
       "              金额    换手%   成交次数  \n",
       "6920  1472909400  0.608  67052  \n",
       "6921  1467535000  0.586  60751  \n",
       "6922  1408651100  0.554  59522  \n",
       "6923   861618660  0.337  38464  \n",
       "6924   852956240  0.341  37324  "
      ]
     },
     "execution_count": 201,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feanum=10#一共有多少特征\n",
    "window=5#时间窗设置\n",
    "df1=pd.read_excel('data.xlsx',0) #读取数据，0对应第一支股票，1对应第二只，以此类推\n",
    "df1=df1.iloc[3600:-10,1:11]#选取从第3600行开始的数据 大概是2006年一月\n",
    "df1.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>开盘</th>\n",
       "      <th>最高</th>\n",
       "      <th>最低</th>\n",
       "      <th>收盘</th>\n",
       "      <th>涨幅</th>\n",
       "      <th>振幅</th>\n",
       "      <th>总手</th>\n",
       "      <th>金额</th>\n",
       "      <th>换手%</th>\n",
       "      <th>成交次数</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3320</th>\n",
       "      <td>0.707387</td>\n",
       "      <td>0.709322</td>\n",
       "      <td>0.713040</td>\n",
       "      <td>0.721766</td>\n",
       "      <td>0.473203</td>\n",
       "      <td>0.175506</td>\n",
       "      <td>0.228606</td>\n",
       "      <td>0.169598</td>\n",
       "      <td>0.057343</td>\n",
       "      <td>0.262941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3321</th>\n",
       "      <td>0.736287</td>\n",
       "      <td>0.732364</td>\n",
       "      <td>0.739406</td>\n",
       "      <td>0.737461</td>\n",
       "      <td>0.421501</td>\n",
       "      <td>0.152542</td>\n",
       "      <td>0.220065</td>\n",
       "      <td>0.168972</td>\n",
       "      <td>0.054682</td>\n",
       "      <td>0.237921</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3322</th>\n",
       "      <td>0.730262</td>\n",
       "      <td>0.748318</td>\n",
       "      <td>0.740632</td>\n",
       "      <td>0.748926</td>\n",
       "      <td>0.404161</td>\n",
       "      <td>0.250957</td>\n",
       "      <td>0.207867</td>\n",
       "      <td>0.162108</td>\n",
       "      <td>0.050811</td>\n",
       "      <td>0.233040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3323</th>\n",
       "      <td>0.758560</td>\n",
       "      <td>0.750680</td>\n",
       "      <td>0.762707</td>\n",
       "      <td>0.754357</td>\n",
       "      <td>0.380517</td>\n",
       "      <td>0.119738</td>\n",
       "      <td>0.124489</td>\n",
       "      <td>0.098344</td>\n",
       "      <td>0.024558</td>\n",
       "      <td>0.149421</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3324</th>\n",
       "      <td>0.734481</td>\n",
       "      <td>0.730592</td>\n",
       "      <td>0.743085</td>\n",
       "      <td>0.741685</td>\n",
       "      <td>0.311791</td>\n",
       "      <td>0.110990</td>\n",
       "      <td>0.126211</td>\n",
       "      <td>0.097334</td>\n",
       "      <td>0.025042</td>\n",
       "      <td>0.144894</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            开盘        最高        最低        收盘        涨幅        振幅        总手  \\\n",
       "3320  0.707387  0.709322  0.713040  0.721766  0.473203  0.175506  0.228606   \n",
       "3321  0.736287  0.732364  0.739406  0.737461  0.421501  0.152542  0.220065   \n",
       "3322  0.730262  0.748318  0.740632  0.748926  0.404161  0.250957  0.207867   \n",
       "3323  0.758560  0.750680  0.762707  0.754357  0.380517  0.119738  0.124489   \n",
       "3324  0.734481  0.730592  0.743085  0.741685  0.311791  0.110990  0.126211   \n",
       "\n",
       "            金额       换手%      成交次数  \n",
       "3320  0.169598  0.057343  0.262941  \n",
       "3321  0.168972  0.054682  0.237921  \n",
       "3322  0.162108  0.050811  0.233040  \n",
       "3323  0.098344  0.024558  0.149421  \n",
       "3324  0.097334  0.025042  0.144894  "
      ]
     },
     "execution_count": 202,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import preprocessing#进行归一化操作\n",
    "min_max_scaler = preprocessing.MinMaxScaler()\n",
    "df0=min_max_scaler.fit_transform(df1)\n",
    "df = pd.DataFrame(df0, columns=df1.columns)\n",
    "df.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>开盘</th>\n",
       "      <th>最高</th>\n",
       "      <th>最低</th>\n",
       "      <th>涨幅</th>\n",
       "      <th>振幅</th>\n",
       "      <th>总手</th>\n",
       "      <th>金额</th>\n",
       "      <th>换手%</th>\n",
       "      <th>成交次数</th>\n",
       "      <th>收盘</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3320</th>\n",
       "      <td>0.707387</td>\n",
       "      <td>0.709322</td>\n",
       "      <td>0.713040</td>\n",
       "      <td>0.473203</td>\n",
       "      <td>0.175506</td>\n",
       "      <td>0.228606</td>\n",
       "      <td>0.169598</td>\n",
       "      <td>0.057343</td>\n",
       "      <td>0.262941</td>\n",
       "      <td>0.721766</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3321</th>\n",
       "      <td>0.736287</td>\n",
       "      <td>0.732364</td>\n",
       "      <td>0.739406</td>\n",
       "      <td>0.421501</td>\n",
       "      <td>0.152542</td>\n",
       "      <td>0.220065</td>\n",
       "      <td>0.168972</td>\n",
       "      <td>0.054682</td>\n",
       "      <td>0.237921</td>\n",
       "      <td>0.737461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3322</th>\n",
       "      <td>0.730262</td>\n",
       "      <td>0.748318</td>\n",
       "      <td>0.740632</td>\n",
       "      <td>0.404161</td>\n",
       "      <td>0.250957</td>\n",
       "      <td>0.207867</td>\n",
       "      <td>0.162108</td>\n",
       "      <td>0.050811</td>\n",
       "      <td>0.233040</td>\n",
       "      <td>0.748926</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3323</th>\n",
       "      <td>0.758560</td>\n",
       "      <td>0.750680</td>\n",
       "      <td>0.762707</td>\n",
       "      <td>0.380517</td>\n",
       "      <td>0.119738</td>\n",
       "      <td>0.124489</td>\n",
       "      <td>0.098344</td>\n",
       "      <td>0.024558</td>\n",
       "      <td>0.149421</td>\n",
       "      <td>0.754357</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3324</th>\n",
       "      <td>0.734481</td>\n",
       "      <td>0.730592</td>\n",
       "      <td>0.743085</td>\n",
       "      <td>0.311791</td>\n",
       "      <td>0.110990</td>\n",
       "      <td>0.126211</td>\n",
       "      <td>0.097334</td>\n",
       "      <td>0.025042</td>\n",
       "      <td>0.144894</td>\n",
       "      <td>0.741685</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            开盘        最高        最低        涨幅        振幅        总手        金额  \\\n",
       "3320  0.707387  0.709322  0.713040  0.473203  0.175506  0.228606  0.169598   \n",
       "3321  0.736287  0.732364  0.739406  0.421501  0.152542  0.220065  0.168972   \n",
       "3322  0.730262  0.748318  0.740632  0.404161  0.250957  0.207867  0.162108   \n",
       "3323  0.758560  0.750680  0.762707  0.380517  0.119738  0.124489  0.098344   \n",
       "3324  0.734481  0.730592  0.743085  0.311791  0.110990  0.126211  0.097334   \n",
       "\n",
       "           换手%      成交次数        收盘  \n",
       "3320  0.057343  0.262941  0.721766  \n",
       "3321  0.054682  0.237921  0.737461  \n",
       "3322  0.050811  0.233040  0.748926  \n",
       "3323  0.024558  0.149421  0.754357  \n",
       "3324  0.025042  0.144894  0.741685  "
      ]
     },
     "execution_count": 203,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#技术问题 重新对列做一个排序\n",
    "order = ['开盘', '最高', '最低', '涨幅','振幅', '总手', '金额','换手%','成交次数','收盘']\n",
    "df = df[order]\n",
    "df.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\anoconda\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:5: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  \"\"\"\n"
     ]
    }
   ],
   "source": [
    "#这一部分在处理数据 将原始数据改造为LSTM网络的输入\n",
    "stock=df\n",
    "seq_len=window\n",
    "amount_of_features = len(stock.columns)#有几列\n",
    "data = stock.as_matrix() #pd.DataFrame(stock) 表格转化为矩阵\n",
    "sequence_length = seq_len + 1#序列长度+1\n",
    "result = []\n",
    "for index in range(len(data) - sequence_length):#循环 数据长度-时间窗长度 次\n",
    "    result.append(data[index: index + sequence_length])#第i行到i+5\n",
    "result = np.array(result)#得到样本，样本形式为 window*feanum\n",
    "cut=10#分训练集测试集 最后cut个样本为测试集\n",
    "train = result[:-cut, :]\n",
    "x_train = train[:, :-1]\n",
    "y_train = train[:, -1][:,-1]\n",
    "x_test = result[-cut:, :-1]\n",
    "y_test = result[-cut:, -1][:,-1]\n",
    "X_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], amount_of_features))\n",
    "X_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], amount_of_features))  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X_train (3309, 5, 10)\n",
      "y_train (3309,)\n",
      "X_test (10, 5, 10)\n",
      "y_test (10,)\n"
     ]
    }
   ],
   "source": [
    "#展示下训练集测试集的形状 看有没有问题\n",
    "print(\"X_train\", X_train.shape)\n",
    "print(\"y_train\", y_train.shape)\n",
    "print(\"X_test\", X_test.shape)\n",
    "print(\"y_test\", y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\anoconda\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:8: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(4, kernel_initializer=\"uniform\", activation=\"relu\")`\n",
      "  \n",
      "E:\\anoconda\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:9: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(1, kernel_initializer=\"uniform\", activation=\"relu\")`\n",
      "  if __name__ == '__main__':\n",
      "E:\\anoconda\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:11: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`.\n",
      "  # This is added back by InteractiveShellApp.init_path()\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "3309/3309 [==============================] - 7s 2ms/step - loss: 0.2108 - acc: 3.0221e-04\n",
      "Epoch 2/100\n",
      "3309/3309 [==============================] - 1s 267us/step - loss: 0.1982 - acc: 3.0221e-04\n",
      "Epoch 3/100\n",
      "3309/3309 [==============================] - 1s 276us/step - loss: 0.1757 - acc: 3.0221e-04\n",
      "Epoch 4/100\n",
      "3309/3309 [==============================] - 1s 272us/step - loss: 0.1266 - acc: 3.0221e-04\n",
      "Epoch 5/100\n",
      "3309/3309 [==============================] - 1s 262us/step - loss: 0.0672 - acc: 3.0221e-04\n",
      "Epoch 6/100\n",
      "3309/3309 [==============================] - 1s 269us/step - loss: 0.0449 - acc: 3.0221e-04\n",
      "Epoch 7/100\n",
      "3309/3309 [==============================] - 1s 261us/step - loss: 0.0418 - acc: 3.0221e-04\n",
      "Epoch 8/100\n",
      "3309/3309 [==============================] - 1s 263us/step - loss: 0.0316 - acc: 3.0221e-04\n",
      "Epoch 9/100\n",
      "3309/3309 [==============================] - 1s 265us/step - loss: 0.0194 - acc: 3.0221e-04\n",
      "Epoch 10/100\n",
      "3309/3309 [==============================] - 1s 262us/step - loss: 0.0097 - acc: 6.0441e-04\n",
      "Epoch 11/100\n",
      "3309/3309 [==============================] - 1s 260us/step - loss: 0.0057 - acc: 6.0441e-04\n",
      "Epoch 12/100\n",
      "3309/3309 [==============================] - 1s 261us/step - loss: 0.0036 - acc: 6.0441e-04\n",
      "Epoch 13/100\n",
      "3309/3309 [==============================] - 1s 270us/step - loss: 0.0025 - acc: 6.0441e-04\n",
      "Epoch 14/100\n",
      "3309/3309 [==============================] - 1s 268us/step - loss: 0.0019 - acc: 6.0441e-04\n",
      "Epoch 15/100\n",
      "3309/3309 [==============================] - 1s 267us/step - loss: 0.0015 - acc: 6.0441e-04\n",
      "Epoch 16/100\n",
      "3309/3309 [==============================] - 1s 267us/step - loss: 0.0012 - acc: 6.0441e-04\n",
      "Epoch 17/100\n",
      "3309/3309 [==============================] - 1s 260us/step - loss: 0.0010 - acc: 6.0441e-04\n",
      "Epoch 18/100\n",
      "3309/3309 [==============================] - 1s 288us/step - loss: 8.5607e-04 - acc: 6.0441e-04\n",
      "Epoch 19/100\n",
      "3309/3309 [==============================] - 1s 330us/step - loss: 7.2796e-04 - acc: 6.0441e-04\n",
      "Epoch 20/100\n",
      "3309/3309 [==============================] - 1s 269us/step - loss: 6.5561e-04 - acc: 6.0441e-04\n",
      "Epoch 21/100\n",
      "3309/3309 [==============================] - 1s 258us/step - loss: 5.9195e-04 - acc: 6.0441e-04\n",
      "Epoch 22/100\n",
      "3309/3309 [==============================] - 1s 266us/step - loss: 5.4035e-04 - acc: 6.0441e-04\n",
      "Epoch 23/100\n",
      "3309/3309 [==============================] - 1s 263us/step - loss: 5.0944e-04 - acc: 6.0441e-04\n",
      "Epoch 24/100\n",
      "3309/3309 [==============================] - 1s 265us/step - loss: 4.8653e-04 - acc: 6.0441e-04\n",
      "Epoch 25/100\n",
      "3309/3309 [==============================] - 1s 263us/step - loss: 4.5464e-04 - acc: 6.0441e-04\n",
      "Epoch 26/100\n",
      "3309/3309 [==============================] - 1s 270us/step - loss: 4.3018e-04 - acc: 6.0441e-04\n",
      "Epoch 27/100\n",
      "3309/3309 [==============================] - 1s 257us/step - loss: 4.2454e-04 - acc: 6.0441e-04\n",
      "Epoch 28/100\n",
      "3309/3309 [==============================] - 1s 260us/step - loss: 4.0752e-04 - acc: 6.0441e-04\n",
      "Epoch 29/100\n",
      "3309/3309 [==============================] - 1s 259us/step - loss: 3.8750e-04 - acc: 6.0441e-04\n",
      "Epoch 30/100\n",
      "3309/3309 [==============================] - 1s 280us/step - loss: 3.8740e-04 - acc: 6.0441e-04\n",
      "Epoch 31/100\n",
      "3309/3309 [==============================] - 1s 277us/step - loss: 3.6246e-04 - acc: 6.0441e-04\n",
      "Epoch 32/100\n",
      "3309/3309 [==============================] - 1s 270us/step - loss: 3.5651e-04 - acc: 6.0441e-04\n",
      "Epoch 33/100\n",
      "3309/3309 [==============================] - 1s 270us/step - loss: 3.4194e-04 - acc: 6.0441e-04\n",
      "Epoch 34/100\n",
      "3309/3309 [==============================] - 1s 270us/step - loss: 3.4197e-04 - acc: 6.0441e-04\n",
      "Epoch 35/100\n",
      "3309/3309 [==============================] - 1s 282us/step - loss: 3.4955e-04 - acc: 6.0441e-04\n",
      "Epoch 36/100\n",
      "3309/3309 [==============================] - 1s 271us/step - loss: 3.2293e-04 - acc: 6.0441e-04\n",
      "Epoch 37/100\n",
      "3309/3309 [==============================] - 1s 272us/step - loss: 3.2045e-04 - acc: 6.0441e-04\n",
      "Epoch 38/100\n",
      "3309/3309 [==============================] - 1s 267us/step - loss: 3.2099e-04 - acc: 6.0441e-04\n",
      "Epoch 39/100\n",
      "3309/3309 [==============================] - 1s 306us/step - loss: 3.3048e-04 - acc: 6.0441e-04\n",
      "Epoch 40/100\n",
      "3309/3309 [==============================] - 1s 302us/step - loss: 3.0966e-04 - acc: 6.0441e-04\n",
      "Epoch 41/100\n",
      "3309/3309 [==============================] - 1s 302us/step - loss: 3.1197e-04 - acc: 6.0441e-04\n",
      "Epoch 42/100\n",
      "3309/3309 [==============================] - 1s 281us/step - loss: 3.4662e-04 - acc: 6.0441e-04\n",
      "Epoch 43/100\n",
      "3309/3309 [==============================] - 1s 300us/step - loss: 3.1113e-04 - acc: 6.0441e-04\n",
      "Epoch 44/100\n",
      "3309/3309 [==============================] - 1s 298us/step - loss: 2.9216e-04 - acc: 6.0441e-04\n",
      "Epoch 45/100\n",
      "3309/3309 [==============================] - 1s 288us/step - loss: 2.8616e-04 - acc: 6.0441e-04\n",
      "Epoch 46/100\n",
      "3309/3309 [==============================] - 1s 305us/step - loss: 2.8253e-04 - acc: 6.0441e-04\n",
      "Epoch 47/100\n",
      "3309/3309 [==============================] - 1s 313us/step - loss: 2.7500e-04 - acc: 6.0441e-04\n",
      "Epoch 48/100\n",
      "3309/3309 [==============================] - 1s 300us/step - loss: 2.7781e-04 - acc: 6.0441e-04\n",
      "Epoch 49/100\n",
      "3309/3309 [==============================] - 1s 313us/step - loss: 2.8624e-04 - acc: 6.0441e-04\n",
      "Epoch 50/100\n",
      "3309/3309 [==============================] - 1s 303us/step - loss: 2.7882e-04 - acc: 6.0441e-04\n",
      "Epoch 51/100\n",
      "3309/3309 [==============================] - 1s 298us/step - loss: 2.6377e-04 - acc: 6.0441e-04\n",
      "Epoch 52/100\n",
      "3309/3309 [==============================] - 1s 319us/step - loss: 2.7999e-04 - acc: 6.0441e-04\n",
      "Epoch 53/100\n",
      "3309/3309 [==============================] - 1s 266us/step - loss: 2.5897e-04 - acc: 6.0441e-04\n",
      "Epoch 54/100\n",
      "3309/3309 [==============================] - 1s 273us/step - loss: 2.6114e-04 - acc: 6.0441e-04\n",
      "Epoch 55/100\n",
      "3309/3309 [==============================] - 1s 275us/step - loss: 2.6557e-04 - acc: 6.0441e-04\n",
      "Epoch 56/100\n",
      "3309/3309 [==============================] - 1s 286us/step - loss: 2.7434e-04 - acc: 6.0441e-04\n",
      "Epoch 57/100\n",
      "3309/3309 [==============================] - 1s 270us/step - loss: 2.5439e-04 - acc: 6.0441e-04\n",
      "Epoch 58/100\n",
      "3309/3309 [==============================] - 1s 270us/step - loss: 2.4419e-04 - acc: 6.0441e-04\n",
      "Epoch 59/100\n",
      "3309/3309 [==============================] - 1s 277us/step - loss: 2.4867e-04 - acc: 6.0441e-04\n",
      "Epoch 60/100\n",
      "3309/3309 [==============================] - 1s 267us/step - loss: 2.3921e-04 - acc: 6.0441e-04\n",
      "Epoch 61/100\n",
      "3309/3309 [==============================] - 1s 270us/step - loss: 2.3505e-04 - acc: 6.0441e-04\n",
      "Epoch 62/100\n",
      "3309/3309 [==============================] - 1s 276us/step - loss: 2.4695e-04 - acc: 6.0441e-04\n",
      "Epoch 63/100\n",
      "3309/3309 [==============================] - 1s 270us/step - loss: 2.4344e-04 - acc: 6.0441e-04\n",
      "Epoch 64/100\n",
      "3309/3309 [==============================] - 1s 308us/step - loss: 2.4115e-04 - acc: 6.0441e-04\n",
      "Epoch 65/100\n",
      "3309/3309 [==============================] - 1s 341us/step - loss: 2.3122e-04 - acc: 6.0441e-04\n",
      "Epoch 66/100\n",
      "3309/3309 [==============================] - 1s 278us/step - loss: 2.2928e-04 - acc: 6.0441e-04\n",
      "Epoch 67/100\n",
      "3309/3309 [==============================] - 1s 261us/step - loss: 2.3428e-04 - acc: 6.0441e-04\n",
      "Epoch 68/100\n",
      "3309/3309 [==============================] - 1s 269us/step - loss: 2.3910e-04 - acc: 6.0441e-04\n",
      "Epoch 69/100\n",
      "3309/3309 [==============================] - 1s 293us/step - loss: 2.4993e-04 - acc: 6.0441e-04\n",
      "Epoch 70/100\n",
      "3309/3309 [==============================] - 1s 284us/step - loss: 2.2844e-04 - acc: 6.0441e-04\n",
      "Epoch 71/100\n",
      "3309/3309 [==============================] - 1s 331us/step - loss: 2.2947e-04 - acc: 6.0441e-04\n",
      "Epoch 72/100\n",
      "3309/3309 [==============================] - 1s 325us/step - loss: 2.4478e-04 - acc: 6.0441e-04\n",
      "Epoch 73/100\n",
      "3309/3309 [==============================] - 1s 277us/step - loss: 2.2066e-04 - acc: 6.0441e-04\n",
      "Epoch 74/100\n",
      "3309/3309 [==============================] - 1s 291us/step - loss: 2.2355e-04 - acc: 6.0441e-04 0s - loss: 2.2174e-04 - acc: 4.3403\n",
      "Epoch 75/100\n",
      "3309/3309 [==============================] - 1s 283us/step - loss: 2.3198e-04 - acc: 6.0441e-04\n",
      "Epoch 76/100\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3309/3309 [==============================] - 1s 331us/step - loss: 2.2399e-04 - acc: 6.0441e-04\n",
      "Epoch 77/100\n",
      "3309/3309 [==============================] - 1s 323us/step - loss: 2.1008e-04 - acc: 6.0441e-04\n",
      "Epoch 78/100\n",
      "3309/3309 [==============================] - 1s 274us/step - loss: 2.2639e-04 - acc: 6.0441e-04\n",
      "Epoch 79/100\n",
      "3309/3309 [==============================] - 1s 266us/step - loss: 2.3928e-04 - acc: 6.0441e-04\n",
      "Epoch 80/100\n",
      "3309/3309 [==============================] - 1s 287us/step - loss: 2.1015e-04 - acc: 6.0441e-04\n",
      "Epoch 81/100\n",
      "3309/3309 [==============================] - 1s 268us/step - loss: 2.0607e-04 - acc: 6.0441e-04\n",
      "Epoch 82/100\n",
      "3309/3309 [==============================] - 1s 264us/step - loss: 2.0455e-04 - acc: 6.0441e-04\n",
      "Epoch 83/100\n",
      "3309/3309 [==============================] - 1s 271us/step - loss: 2.2806e-04 - acc: 6.0441e-04\n",
      "Epoch 84/100\n",
      "3309/3309 [==============================] - 1s 285us/step - loss: 2.1023e-04 - acc: 6.0441e-04\n",
      "Epoch 85/100\n",
      "3309/3309 [==============================] - 1s 278us/step - loss: 2.1363e-04 - acc: 6.0441e-04\n",
      "Epoch 86/100\n",
      "3309/3309 [==============================] - 1s 271us/step - loss: 2.2253e-04 - acc: 6.0441e-04\n",
      "Epoch 87/100\n",
      "3309/3309 [==============================] - 1s 281us/step - loss: 2.1608e-04 - acc: 6.0441e-04\n",
      "Epoch 88/100\n",
      "3309/3309 [==============================] - 1s 266us/step - loss: 2.0521e-04 - acc: 6.0441e-04\n",
      "Epoch 89/100\n",
      "3309/3309 [==============================] - 1s 268us/step - loss: 2.0203e-04 - acc: 6.0441e-04\n",
      "Epoch 90/100\n",
      "3309/3309 [==============================] - 1s 272us/step - loss: 2.1245e-04 - acc: 6.0441e-04\n",
      "Epoch 91/100\n",
      "3309/3309 [==============================] - 1s 365us/step - loss: 2.0414e-04 - acc: 6.0441e-04\n",
      "Epoch 92/100\n",
      "3309/3309 [==============================] - 1s 288us/step - loss: 1.9922e-04 - acc: 6.0441e-04\n",
      "Epoch 93/100\n",
      "3309/3309 [==============================] - 1s 282us/step - loss: 1.9394e-04 - acc: 6.0441e-04\n",
      "Epoch 94/100\n",
      "3309/3309 [==============================] - 1s 264us/step - loss: 1.9698e-04 - acc: 6.0441e-04\n",
      "Epoch 95/100\n",
      "3309/3309 [==============================] - 1s 272us/step - loss: 2.1476e-04 - acc: 6.0441e-04\n",
      "Epoch 96/100\n",
      "3309/3309 [==============================] - 1s 268us/step - loss: 2.7788e-04 - acc: 6.0441e-04\n",
      "Epoch 97/100\n",
      "3309/3309 [==============================] - 1s 307us/step - loss: 2.3439e-04 - acc: 6.0441e-04\n",
      "Epoch 98/100\n",
      "3309/3309 [==============================] - 1s 285us/step - loss: 2.0569e-04 - acc: 6.0441e-04\n",
      "Epoch 99/100\n",
      "3309/3309 [==============================] - 1s 271us/step - loss: 2.0625e-04 - acc: 6.0441e-04\n",
      "Epoch 100/100\n",
      "3309/3309 [==============================] - 1s 273us/step - loss: 2.0680e-04 - acc: 6.0441e-04\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x1f80a0f4cc0>"
      ]
     },
     "execution_count": 206,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#建立、训练模型过程\n",
    "d = 0.0001\n",
    "model = Sequential()#建立层次模型\n",
    "model.add(LSTM(64, input_shape=(window, feanum), return_sequences=True))#建立LSTM层\n",
    "model.add(Dropout(d))#建立的遗忘层\n",
    "model.add(LSTM(16, input_shape=(window, feanum), return_sequences=False))#建立LSTM层\n",
    "model.add(Dropout(d))#建立的遗忘层\n",
    "model.add(Dense(4,init='uniform',activation='relu'))   #建立全连接层     \n",
    "model.add(Dense(1,init='uniform',activation='relu'))\n",
    "model.compile(loss='mse',optimizer='adam',metrics=['accuracy'])\n",
    "model.fit(X_train, y_train, nb_epoch =100, batch_size = 256) #训练模型nb_epoch次"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "lstm_43 (LSTM)               (None, 5, 64)             19200     \n",
      "_________________________________________________________________\n",
      "dropout_43 (Dropout)         (None, 5, 64)             0         \n",
      "_________________________________________________________________\n",
      "lstm_44 (LSTM)               (None, 16)                5184      \n",
      "_________________________________________________________________\n",
      "dropout_44 (Dropout)         (None, 16)                0         \n",
      "_________________________________________________________________\n",
      "dense_43 (Dense)             (None, 4)                 68        \n",
      "_________________________________________________________________\n",
      "dense_44 (Dense)             (None, 1)                 5         \n",
      "=================================================================\n",
      "Total params: 24,457\n",
      "Trainable params: 24,457\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "#总结模型\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [],
   "source": [
    "#在训练集上的拟合结果\n",
    "y_train_predict=model.predict(X_train)[:,0]\n",
    "y_train=y_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Train Data')"
      ]
     },
     "execution_count": 209,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "draw=pd.concat([pd.DataFrame(y_train),pd.DataFrame(y_train_predict)],axis=1)\n",
    "draw.iloc[100:400,0].plot(figsize=(12,6))\n",
    "draw.iloc[100:400,1].plot(figsize=(12,6))\n",
    "plt.legend(('real', 'predict'),loc='upper right',fontsize='15')\n",
    "plt.title(\"Train Data\",fontsize='30') #添加标题\n",
    "#展示在训练集上的表现 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [],
   "source": [
    "#在测试集上的预测\n",
    "y_test_predict=model.predict(X_test)[:,0]\n",
    "y_test=y_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Test Data')"
      ]
     },
     "execution_count": 211,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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foqMhgHjoWpLmDIMFr/nd0UiIiIiJ23//v15fs6zzjor6NfhUGDOb1HFYdBEqJwEk6+EpTP9rkhERESEoUOHkpSUxLRp06hXrx7R0dG0atWKxYsXH93HzPjPf/7DLbfcQkJCAo0bNz667b333iMpKYno6GgqVKjAXXfdRWpq6p+u8e6771K3bl1iYmJo06YNv/7661/qyGpKxhdffEG7du2Ii4ujZMmStG3blh9++IExY8Zw0003Ha3NzGjbtm0eflaypsBcEIrFwaXvQIUzYNIQWD7H74pEREREWL16Nbfddhv3338/b7/9Nrt27eKiiy7iwIEDR/d58skn2bhxI+PGjePZZ58FYNKkSfTu3ZvmzZszffp0HnzwQUaNGsXw4ccWb/v+++/p378/TZo0YcqUKXTv3p1+/fodt6bPP/+cDh06EBkZydixY5k4cSKtW7dm/fr1dO3aldtv99a6+Oabb/jmm2948cUX8/iz8lfqklFQokvC4CkwtjtMvNQbda7Z1u+qREREJC/MvBs2LfTn2hUaQ+fHTurQbdu28d5779GyZUsAmjVrRq1atRgzZgzXXXedd/oKFZg4ceLRY5xz3HnnnQwZMuRPYbVYsWLccMMNDB8+nLJly/LYY49Rt25dJk2ahJnRuXNnDh48yH333ZdjTcOHD6dJkyZ89NFHmBkAnTp1Orq9evXqAJxzzjkn9Z5PhkaYC1JMaRg8DcrUgvEDYfXXflckIiIiRVhiYuLRsAxQrVo1mjVrxrx5846+1rVr1z8ds2zZMtasWUO/fv1IS0s7+tG+fXsOHDjAokWLAO/mvO7dux8NvQC9e/fOsZ69e/fy3Xffcfnll//pOL9phLmgxZaFIe/BmC7wVl8YPBWqNPe7KhERETkVJznC67fExMQsX9u4cePR5+XLl//T9m3btgHQpUuXLM+5du1aADZt2vSX82d1vYx27NiBc46KFSsev/gCpMDsh7gEGDLdC81vXuIF6EpN/a5KREREipgtW7Zk+VrDhg2PPs880lumTBkARo0axVlnnfWX42vUqAF4Uzkynz+r62VUunRpwsLC/hTYg4GmZPglviJc/r43TWNcL9j4s98ViYiISBGzZcsWvv762BTRNWvW8P3339O8efZ//T799NOpVKkSv//+O0lJSX/5KFu2LABnn30206dPxzl39NgpU6bkWE9sbCwtWrTgjTfe+NNxGUVFRQH86cbE/KYRZj+VrOyF5te7wLiecPkHUL6B31WJiIhIEVGuXDkGDx7MI488QkxMDA888ACJiYkMHTo022PCwsJ46qmnGDx4MLt376Zz585ERUWxatUqpk2bxuTJkylevDh///vfadGiBf369eOqq65i0aJFjB49+rg1PfbYY1xwwQV07tyZYcOGERsbyzfffENSUhLdunWjXr16AIwcOZL27dsTHx/P6aefnlefkqzfc76eXY6vdDW4fDqER8EbPWDbcr8rEhERkSKiWrVqPPnkkzz00EMMGDCA+Ph4PvroI6Kjo3M8rn///rz33nv8+OOP9O3bl969e/Piiy/StGnToyPASUlJTJgwgR9++IGePXsybdq0P3XbyE6bNm2YPXs2+/bt47LLLqN///7MnTuXypUrA9C6dWvuvPNORo4cSYsWLbj22mtP/RNxHJbdcLdfkpKSXHJyst9lFLyty2BMVwgLh6EfQtlaflckIiIiWViyZAn169f3u4xTNnToUBYtWkRhz105fb3MbIFzLul459AIc7BIqOvd/Jd20OvVvGO13xWJiIiICArMwaV8AxgyDQ7tgbEXw651flckIiIiUuQpMAebik283sz7d3gjzXs2+V2RiIiIFEJjxowp9NMx8ooCczCq1AwuneyF5bHdIWWr3xWJiIiIFFkKzMGqagu49B3YucbrnrFvu98ViYiIiBRJCszBrPp5MHA8/LHCC837d/hdkYiIiEC2i2pIcMmrr5MCc7Cr1Q4GvAVbf/WW0T6w2++KREREirTIyEj279/vdxmSC/v37ycyMvKUz6PAHArqdIS+Y2HjT/BWHziY4ndFIiIiRVZiYiLr169n3759GmkOUs459u3bx/r160lMTDzl82lp7FBRrwtcMhomXwnjB8CgSRBV3O+qREREipz4+HgANmzYQGpqqs/VSHYiIyMpX7780a/XqVBgDiUNe0J6Kky5BiYMgoETIDLnpStFREQk78XHx+dJEJPQoCkZoeaMvtDjBVj1GUwa7K0MKCIiIiL5RoE5FJ11KXR7BpZ/DO9c4Y06i4iIiEi+UGAOVUlXQOcnYemH8O7VkJ7md0UiIiIihZLmMIeyFsMg/SB8fB+ER0GvlyEs3O+qRERERAoVBeZQ1/Imbx7zp49ARBRc/ByE6Q8HIiIiInlFgbkw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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "draw=pd.concat([pd.DataFrame(y_test),pd.DataFrame(y_test_predict)],axis=1);\n",
    "draw.iloc[:,0].plot(figsize=(12,6))\n",
    "draw.iloc[:,1].plot(figsize=(12,6))\n",
    "plt.legend(('real', 'predict'),loc='upper right',fontsize='15')\n",
    "plt.title(\"Test Data\",fontsize='30') #添加标题\n",
    "#展示在测试集上的表现 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集上的MAE/MSE/MAPE\n",
      "0.009782991276097091\n",
      "0.00020189546823013484\n",
      "4.007854644751634\n",
      "测试集上的MAE/MSE/MAPE\n",
      "0.026848849524051886\n",
      "0.0011220225176337844\n",
      "3.462527965648396\n",
      "预测涨跌正确: 0.6666666666666666\n"
     ]
    }
   ],
   "source": [
    "#输出结果\n",
    "from sklearn.metrics import mean_absolute_error\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import math\n",
    "def mape(y_true, y_pred):\n",
    "    return np.mean(np.abs((y_pred - y_true) / y_true)) * 100\n",
    "print('训练集上的MAE/MSE/MAPE')\n",
    "print(mean_absolute_error(y_train_predict, y_train))\n",
    "print(mean_squared_error(y_train_predict, y_train) )\n",
    "print(mape(y_train_predict, y_train) )\n",
    "print('测试集上的MAE/MSE/MAPE')\n",
    "print(mean_absolute_error(y_test_predict, y_test))\n",
    "print(mean_squared_error(y_test_predict, y_test) )\n",
    "print(mape(y_test_predict, y_test) )\n",
    "y_var_test=y_test[1:]-y_test[:len(y_test)-1]\n",
    "y_var_predict=y_test_predict[1:]-y_test_predict[:len(y_test_predict)-1]\n",
    "txt=np.zeros(len(y_var_test))\n",
    "for i in range(len(y_var_test-1)):\n",
    "    txt[i]=np.sign(y_var_test[i])==np.sign(y_var_predict[i])\n",
    "result=sum(txt)/len(txt)\n",
    "print('预测涨跌正确:',result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
